在資料表設計最經常性聽到的名詞就是正規化
常見的正規化名稱為
正規化的執行步驟網路上的資訊很多就不在此描述
若無法記住各正規化的詳細描述與步驟
小弟在設計資料表時主要拿捏要領
以訂單主資料表部分欄位為例
Order.OrderHeader
---------------------------
Id		OrderNo		Status
---------------------------
1		ORDER001	Processing
2		ORDER002	Finished
3		ORDER003	Cancelled
4		ORDER004	Finished
5		ORDER005	Processing
上每一筆資料列的最大儲存成本為
Orders.OrderHeader
INT + CHAR(8) + VARCHAR(10) = 4+8+12 = 24 (Byte)
Order.OrderStatus
--------------------------------
Id		Name
--------------------------------
1		Processing
2		Finished
3		Cancelled
Order.OrderHeader
--------------------------------
Id		OrderNo		StatusId
--------------------------------
1		ORDER001	1
2		ORDER002	2
3		ORDER003	3
4		ORDER004	2
5		ORDER005	1
每一筆資料列的最大儲存成本為
Order.OrderStatus
TINYINT + VARCHAR(10) = 1+12 = 13 (Byte)
Order.OrderHeader
INT + CHAR(8) + TINYINT = 4+8+1 = 13 (Byte)
可以發現 Order.OrderHeader 資料表的儲存成本降低了
當資料量越龐大的情況下
此設計所節省的儲存成本就會更明顯
透過正規化設計能夠有效的減少儲存成本
雖然儲存成本相較於記憶體或處理起來說是低廉
但是在存取成本上
從硬碟存取資料的成本
相較記憶體就高了許多
當然
必要時也得對資料表進行非正規化設計